perm filename IIDRV.WRU[SYS,HE]2 blob sn#019453 filedate 1973-01-09 generic text, type T, neo UTF8
00100				IIDRV.DMP
00200	
00300		This program allows a user to execute  the  hand/eye  utility
00400	routines  (described  in  HEUTIL.WRU[SYS,HE]) from  the  console  for
00500	debugging the routines, the other jobs, or strategies.
00600	
00700	SYNTAX
00800	
00900	<proc_name>	::=	GETEDGE | CURVE | SIMPL | COMP | REJ_OBJ
01000			::=	JOB_START | INNER | COLGET | DISP_OBJ | CAMCHG
01100			::=	VERIF | DISP_DEL | TAB_SET | MOVE_OBJ
01200	
01300	<special_id>	::=	U_BLOB | U_OBJ | U_LINK | ALL | STATUS
01400	
01500			::=	CAMERA
01600	<digit>		::=	1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
01700	
01800	<letter>	::=	A | B | ... | Z | a | ... | z | _
01900	
02000	<integer>	::=	<digit> | <integer><digit>
02100	
02200	<s_int>		::=	<integer> | <s_int>
02300	
02400	<real>		::=	<s_int>.<integer> | .<integer> | <s_int>.
02500	
02600	<string>	::=	" any characters except double quote "
02700	
02800	<identifier>	::=	<letter> | <digit><identifier>
02900			::=	<identifier><digit> | <identifier><letter>
03000	
03100			everything is valid except <special_id> or <proc_name>
03200	
03300	<item>		::=	<integer> | <identifier>
03400	
03500			the integer must be a valid decimal item number and
03600			the identifier must be a valid print name
03700	
03800	<item_list>	::=	<item> | <item_list><item>
03900	
04000	<set>		::=	{<item_list>}
04100	
04200	<simple_id>	::=	<s_int> | <string> | <identifier> | <set> | <real>
04300	
04400	<argument_list>	::=	<simple_id> | <argument_list>,<simple_id>
04500	
04600	<proc_id>	::=	<proc_name> | <proc_name>(<argument_list)
04700	
04800			the first is only valid for procedures of no args
04900	
     

00100	STATEMENTS
00200	
00300		The program recognizes four types of statements.   Each  must
00400	be  terminated  by a carriage return.  After the scanner has parsed a
00500	statement, it ignores any extra characters at the end  of  the  input
00600	string.  The null statement will be ignored.
00700	
00800	1. execute a special function
00900	
01000	<special_id>=
01100	
01200		the functions are as follows:
01300	
01400		ALL	output all identifier names with their current value,
01500			if any
01600		U_BLOB	output the set of all known blob items
01700		U_OBJ	output the set of all known object item
02000		U_LINK	output a list of sets of blobs and the set of objects
02100			linked to each one
02200		STATUS	outputs the datum of each blob item in U_BLOB  (which
02300			is the blob's status word)
02400		CAMERA	outputs  the contents  of the  global camera storage:
02500			CAMFLG, CAMPAN, CAMTIL, CAMRANG, and CAMLENS (see de-
02600			scription of CAMCHG procedure).
02700	
02800	2. delete a declared identifier
02900	
03000	<identifier>↓
03100	
03200		If the identifier is recognized it  will  be  deleted.   This
03300	recovers space in the program's tables.
03400	
03500	3. evaluate
03600	
03700	<simple_id> | <proc_id>
03800	
03900		The value of the statement is determined and typed  out.   If
04000	you typed a set, string, real, or integer,  it  will  be  echoed.   A
04100	recognized identifier will have its current value typed.  A procedure
04200	will be executed and its value, if any, typed.
04300	
04400	4. assign
04500	
04600	<identifier>←<simple_id> | <identifier>←<proc_id> | <identifier>←
04700	
04800		The construct on the right side of the arrow is evaluated and
04900	the  value  stored  in the identifier on the left.  If the identifier
05000	has appeared before in an assignment statement, the old value will be
05100	lost.  The  data  type associated with the value, not the identifier,
05200	which  may be integer, string, set, real, or empty. If the right side
05300	of the arrow is empty, the identifier will be defined, if  necessary,
05400	but will have no value.
05500	
05600	
05700	
05800	PROCEDURES
05900	
06000		When  a  procedure  is  specified,  the  arguments  given are
06100	evaluated  and  the  data  type  of  their  value  must   match   the
06200	declaration.  The only exception is if the formal parameter is called
06300	by reference. Then, the matching argument must be a known  identifier
06400	but its value (of any type) is set to empty before the call.
06500	
06600	
06700	
06800	ERROR MESSAGES  (An error prevents execution of the statement. Except
06900		for the first,  each message  is followed  by a line feed and
07000		the part of the input string no yet scanned, if any)
07100	
07200	*** NO VALUE ***	This is not usually an error. The program was
07300				expected to type a value and the statement or
07400				identifier did not have one.
07500	foo NOT AN ITEM		foo was  encountered in a set being typed  in
07600				and is not a legal item or print name
07700	NULL TERM ILLEGAL IN SET Things like {A,} and {A,,B} are not allowed.
07800				{}, the null set, is legal however
07900	foo NOT RECOGNIZED OR	an identifier, foo, was either not recognized
08000		ILLEGAL		and not on the left side of an assignment, or
08100				was the wrong type  (you  used a <special_id>
08200				where a <identifier> was required, etc.)
08300	CONSTANT FOR CALL BY	A reference argument must be an identifier.
08400		REFERENCE
08500	STRING DID NOT END	Second " not found in statement
08600	SET DID NOT END		} not found in statement
08700	UNKNOWN DELIMITER - d	d is  not recognized, either at all or in the
08800				context where used
08900	ARGUMENT MISMATCH	The argument type doesn't match declaration
09000	<ARGS			not enough arguments provided
09100	>ARGS			too many arguments provided, or ) is missing
     

00100	RUNNING THE PROGRAM
00200	
00300		The  easiest  way  to  run  the  program  is  to  execute  DO
00400	RUNII[SYS,HE].  This  DO  file will load the monitor, link to a saved
00500	segment (GLBNEW[SYS,HE]), read in the macro fill HEMACRO[SYS,HE], and
00600	execute  the  macro  which logs in and starts IIDRV, with tracing and
00700	typing on.  IIDRV's logical name to the monitor is DRV.   The  macros
00800	executed  by  JOB_START will always reset the default logical name to
00900	DRV.
01000	
01100	
01200	
01300	WARNING ON DELETION OF ITEMS
01400	
01500		When REJ_OBJ deletes items, they are removed from all sets in
01600	the utility routines but not  from  IIDRV.   The  set  passed  as  an
01700	argument  to  REJ_OBJ will be cleared, but other sets you have stored
01800	may contain deleted items.
01900	
02000	SPECIAL PROCEDURES
02100	
02200	PROCEDURE MOVE_OBJ(SET OBJ; INTEGER DX, DY, DTHETA);
02300	
02400		uses NEW_SIMP in the utility routines  to  change  the  world
02500	model as if the objects in OBJ had been moved an incremental distance
02600	DX,DY in inches from their current position and rotated by DTHETA  in
02700	degrees.